/*
 *  $Id: Debug.cs 1192 2010-11-13 12:34:12Z thenn.erannor $
 *	This file is a part of Ragima CCG.
 *	(C) 2008-2010 Ragima development group.
 *
 *	Licensed under the terms of the GNU GPL License version 2.
 *
 */

using System;
using System.Diagnostics;
using System.IO;

namespace Ragima.Helper {
    /// <summary>
    /// Вспомогательные методы для отладки.
    /// </summary>
    public static class Debug {
        /// <summary>
        /// Выводит текущий стек на консоль (не включая вызов данного метода).
        /// </summary>
        public static void PrintStackTrace() {
            PrintStackTrace(Console.Out, 2);
        }
        /// <summary>
        /// Выводит текущий стек на указанный TextWriter (не включая вызов данного метода).
        /// </summary>
        public static void PrintStackTrace(TextWriter writer) {
            PrintStackTrace(writer, 2);
        }

        /// <summary>
        /// Выводит текущий стек на указанный TextWriter (пропустив указанное число вызовов).
        /// </summary>
        private static void PrintStackTrace(TextWriter writer, int skipFrames) {
            writer.WriteLine("Stack trace at {0}", DateTime.Now);
            var stack = new StackTrace(skipFrames, true);
            writer.WriteLine(stack.ToString());
        }
    }
}
